/*
 * ArchivoRuta.h
 *
 *  Created on: 31/03/2011
 */


#ifndef ArchivoRuta_H_
#define ArchivoRuta_H_

#include "../indice/RegistroRuta.h"
#include <fstream>
#include "iostream"

using namespace std;

class ArchivoRuta {

private:
		//Archivo donde se van a almacenar los registros rutas
		fstream archivoRuta;
		string nombreDeArchivoRuta;
public:


/****** Crea un archivo de registros rutas y lo deja abierto para lectura-escritura **************************************************************************************************************/
		ArchivoRuta(string nombreDeArchivoRuta);

/****** Escribe un registro ruta, devuelve el Id correspondiente al registro insertado ************************************************************************/
		int escribir(RegistroRuta* unRegistroRuta);

/****** Abre el archivo para lectura ************************************************************************/
		void abrirParaLeer();

/****** Abre el archivo para escritura ************************************************************************/
		void abrirParaEscribir();

/****** Lee el registro correspondiente al Id, si no lo encuentra devuelve un registro vacio *******************************************************************************/
		RegistroRuta* leer(int idRegistroRuta);

/****** Lee el siguiente registro de manera secuencial, si no lo encuentra devuelve un registro vacio *******************************************************************************/
		RegistroRuta* leerSiguiente();

/****** Cierra el archivo *********************************************************************************************************************************************/
		void cerrar();

/****** Destruye el archivo *********************************************************************************************************************************************/
		virtual ~ArchivoRuta();

		bool estaCerrado();

		void sobreescribir();

/****** Marca el fin del archivo *********************************************************************************************************************************************/
		void marcarFin();

		void escribirCantidadTotal(int cantidadTotal);

		int leerCantidadTotal();
};

#endif /* ArchivoRuta_H_ */
